home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 301-325 / disk_315 / surf / mouse.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  3KB  |  152 lines

  1. #include "scrnio.ih"
  2. #ifdef MANX
  3. #include <functions.h>
  4. #endif
  5. #include "scrnio.h"
  6. #include "mytypes.h"
  7.  
  8. #include "bezpt.h"
  9. #include "control.h"
  10.  
  11.  
  12. static bool buttondown;  /* is left button down */
  13. static short mousex, mousey;
  14. static enum BezPtEnum selbezpt;  /* selected bez pt */
  15.  
  16. void HandleTicks(mesg)
  17. struct IntuiMessage *mesg;
  18. {
  19.     int x, y;
  20.  
  21.     x = CntrX(mesg->MouseX);
  22.     y = CntrY(mesg->MouseY);
  23.  
  24.     if(!buttondown || (mousex == x && mousey == y )){
  25.         return;
  26.     }
  27.  
  28.     mousex = x;
  29.     mousey = y;
  30.  
  31.     switch( CurMode ) {
  32.  
  33.     case DRAWPOLY:
  34.          EditBezPt( mousex, mousey);
  35.          break;
  36.  
  37.     case FITBEZIER:
  38.         switch(selbezpt) {
  39.         case BPEStartPt:
  40.             EditStartPt(mousex, mousey);
  41.             break;
  42.  
  43.         case BPEEndPt:
  44.             EditEndPt(mousex, mousey);
  45.             break;
  46.  
  47.         case BPECntrlPt1:
  48.             EditControl0(mousex, mousey);
  49.             break;
  50.  
  51.         case BPECntrlPt2:
  52.             EditControl1(mousex, mousey);
  53.             break;
  54.         }
  55.         break;
  56.  
  57.     default:
  58.         break;
  59.     }
  60. }
  61.  
  62.  
  63.  
  64. void HandleMButtons(mesg)
  65. struct IntuiMessage *mesg;
  66. {
  67.  
  68.     long startdist, enddist, leftdist, rightdist;
  69.     long tx, ty;
  70.  
  71.     mousex = CntrX(mesg->MouseX);
  72.     mousey = CntrY(mesg->MouseY);
  73.  
  74.     switch( mesg->Code) {
  75.     case SELECTDOWN:
  76.         buttondown = true;  /* down */
  77.  
  78.         switch( CurMode ) {
  79.         case DRAWPOLY:
  80.             InitBezPt( mousex, mousey);
  81.             if( GetNumSegs() == 0 ) {
  82.                 InitBezPt( mousex, mousey );
  83.             }
  84.             break;
  85.  
  86.         case FITBEZIER:
  87.             tx = mousex - StartPtX(GetCurSeg());
  88.             ty = mousey - StartPtY(GetCurSeg());
  89.             startdist = tx * tx + ty * ty;
  90.  
  91.             tx = mousex - EndPtX(GetCurSeg());
  92.             ty = mousey - EndPtY(GetCurSeg());
  93.             enddist = tx * tx + ty * ty;
  94.  
  95.             tx = mousex - Cntrl1X(GetCurSeg());
  96.             ty = mousey - Cntrl1Y(GetCurSeg());
  97.             leftdist = tx * tx + ty * ty;
  98.  
  99.             tx = mousex - Cntrl2X(GetCurSeg());
  100.             ty = mousey - Cntrl2Y(GetCurSeg());
  101.             rightdist = tx *tx + ty * ty;
  102.  
  103.             if( leftdist <= rightdist &&
  104.                  leftdist <= startdist &&
  105.                  leftdist <= enddist ) {
  106.                 selbezpt = BPECntrlPt1;
  107.                 EditControl0( mousex, mousey );
  108.                 }
  109.             else if ( rightdist <= startdist &&
  110.                     rightdist <= enddist ) {
  111.                 selbezpt = BPECntrlPt2;
  112.                 EditControl1( mousex, mousey );
  113.                 }
  114.             else if ( startdist <= enddist ) {
  115.                 selbezpt = BPEStartPt;
  116.                 EditStartPt(mousex, mousey);
  117.             }
  118.             else {
  119.                 selbezpt = BPEEndPt;
  120.                 EditEndPt(mousex, mousey);
  121.             }
  122.             break;
  123.  
  124.         default:
  125.             break;
  126.         }
  127.         break;
  128.  
  129.  
  130.     case SELECTUP:
  131.         buttondown = false; /* up */
  132.         break;
  133.  
  134.     case MENUUP:
  135.         if( CurMode == FITBEZIER ) {
  136.             DrawStartPt();
  137.             DrawEndPt();
  138.             DrawControl0();
  139.             DrawControl1();
  140.             NextSeg();
  141.             DrawStartPt();
  142.             DrawEndPt();
  143.             DrawControl0();
  144.             DrawControl1();
  145.         }
  146.         break;
  147.  
  148.     default:
  149.         break;
  150.     }
  151. }
  152.